/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package be.ugent.medirem.persistence.facade;

import be.ugent.medirem.persistence.entity.details.GpDetails;
import be.ugent.medirem.persistence.entity.details.LocationDetails;
import be.ugent.medirem.persistence.entity.details.PatientDetails;
import be.ugent.medirem.persistence.entity.values.GpValues;
import java.util.List;
import javax.ejb.Local;
import javax.persistence.EntityNotFoundException;

/**
 *
 * @author Simon
 * @author Thomas Roelens
 */
@Local
public interface GpDaoLocal {

    Long create(GpValues gp, String password) throws IllegalArgumentException;

    GpDetails getDetails(final Long id) throws EntityNotFoundException, IllegalArgumentException;

    void update(GpValues gp) throws EntityNotFoundException, IllegalArgumentException;

    void update(Long gpId, Long locationId) throws EntityNotFoundException, IllegalArgumentException;

    void updatePassword(Long id, String old, String password) throws EntityNotFoundException, IllegalArgumentException;

    LocationDetails getLocation(Long gpId) throws EntityNotFoundException, IllegalArgumentException;

    List<PatientDetails> getPatients(final Long id) throws EntityNotFoundException, IllegalArgumentException;

    void addPatient(Long id, Long patientId) throws EntityNotFoundException, IllegalArgumentException;

    Long getGpId(String username) throws IllegalArgumentException;

    boolean hasPatient(Long id, Long patient);
}
